<h1>ENTITY TIMELINE EVENTS DOCUMENTATION </br>Version: 1.21.80.3</h1>
<h2><p id="Index">索引</p></h2>
<table border="1">
<tr> <th><a href="#Animation Controller Events">动画控制器事件</a></th> </tr>
<tr> <th><a href="#Animation Events">动画事件</a></th> </tr>
<tr> <th><a href="#Animation Notes">动画注释</a></th> </tr>
<tr> <th><a href="#Events">事件</a></th> </tr>
<tr> <th><a href="#General Notes">总注解</a></th> </tr>
</table>
<a href="#Index">返回顶部</a>
<h1><p id="Animation Controller Events">动画控制器事件</p></h1>

</br>动画控制器可以在进入或退出状态时触发事件。在状态进入时触发的事件位于 “on_entry” 部分，退出时触发的事件位于 “on_exit” 部分。</br><h2></h2>
<br / ><textarea readonly="true" cols="105" rows="23">

{
  "format_version": "1.8.0",
  "animation_controllers": {
    "controller.animation.test": {
      "states": {
        "default": {
          "on_entry": [
            "event1", // note that these events can be any event, slash command, Molang, or entity event
            "event2",
            "event3"
          ],
          "on_exit": [
            "event1",
            "event2"
          ]
        },
      }
    }
  }
}

</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h1><p id="Animation Events">动画事件</p></h1>

</br>动画可以具有专用于事件的时间轴。“timeline” 部分包含事件时间轴列表。以下是特定时间可以触发单个事件或事件数组的各种示例：</br><h2></h2>
<br / ><textarea readonly="true" cols="68" rows="32">

{
  "format_version": "1.8.0",
  "animations": {
    "animation.test_events": {
      "timeline": {
        "2.0": "@s minecraft:entity_born",
        "4.0": [ "@s minecraft:ageable_grow_up" ]
      },
      "animation_length": 5.0
    },
    "animation.test_molang": {
      "timeline": {
        "0.0": "variable.pop_smoke = 1; variable.pop_bubbles = 0;",
        "3.0": [
          "variable.pop_smoke = 0;",
          "variable.pop_bubbles = 1;"
        ]
      }
    },
    "animation.test_commands": {
      "timeline": {
        "1.0": "/tell @a timeline command1",
        "2.0": [
          "/tell @a timeline command 2.1",
          "/tell @a timeline command 2.2"
        ],
        "3.0": [ "/tell @a command 3" ]
      }
    }
  }
}

</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h1><p id="Animation Notes">动画注释</p></h1>

</br>实体事件发生在动画中，通常发生在客户端上（通过资源包），但也可能发生在服务器上（通过行为包）。由于游戏的服务器端没有视觉方面，因此显然不会出现基于骨骼的动画。 但是，旧版动画基本上是事件的时间轴，事件是动画视觉绑定的骨骼位置，用于移动实体的视觉形状。 基岩版动画系统的机制是状态机 （Animation Controllers） 和时间轴 （Animations）。 这些概念直接应用于事件的触发，因此动画系统可以在服务器上执行（不包括视觉方面），目的是驱动实体事件。</br></br>要在服务器上（在行为包中）使用实体事件，请像向资源包添加动画控制器和动画一样，将动画控制器和动画添加到行为包中。 将动画和动画控制器添加到实体描述字段中的 “animations” 部分。 这些动画和动画控制器将在服务器上运行，就像它们在资源包中的客户端上运行一样。 添加带有 “animate” 子部分的 “scripts” 部分，以指定要运行的动画/动画控制器。</br></br>客户端 （资源包） 事件不需要特殊设置，因为客户端实体通常已经具有动画和动画控制器。 只需在动画或动画控制器中将事件添加到需要的位置即可。</br><h2></h2>
<br / ><textarea readonly="true" cols="106" rows="30">

{
  // Example of the schema for a server-side entity, modified to run animations and animation controllers
  "format_version": "1.8.0",
  "minecraft:entity": {
    "description": {
      "identifier": "minecraft:cat",
      ...
      "animations": {
        "anim1": "animation.anim1",
        "anim2": "animation.anim2",
        "anim_controller1": "controller.animation.test1",
        "anim_controller2": "controller.animation.test2"
      },
      "scripts": {
        // note that only these animations and animation controllers will automatically run:
        "animate": [
          "anim1",
          "anim_controller1",
          ...
         ]
      }
      ...
    },
    ...
  },
  ...
}

</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h1><p id="Events">事件</p></h1>

</br>事件由三个类别组成，均由字符串表示：</br>- Entity events（实体事件）</br>- Slash Commands（斜杠命令）</br>- Molang Expressions（MoLang表达式）</br></br>详细地：</br></br>实体事件：仅限服务端（行为包）。目前，我们只支持实体事件 self，这些事件采用 “@s event” 的形式。这些是在实体定义文件的 events 部分中声明的事件。例如，在cat.json中，“minecraft:ageable_grow_up”事件会导致小猫长大。这将采用 “@s minecraft:ageable_grow_up” 的形式</br></br>斜杠命令：仅限服务端（行为包）。可以调用任何斜杠命令，例如 “/particle minecraft:example_smoke_puff ~ ~ ~”。斜杠命令的假定实体是调用实体，因此此特定斜杠命令将在实体的位置生成烟雾喷气效果。</br></br>Molang 表达式：这将执行 Molang 表达式。主要用途是设置以后可以使用的 Molang 变量。例如，状态转换可能正在查看一个特定的 Molang 变量，而此表达式可能会更改该变量。实体上的粒子特效可能会因效果用于颜色色调的 Molang 变量而更改颜色。用于移动手臂的动画可能会使用由动画事件设置的 Molang 变量。</br><h2></h2>
<br / ><textarea readonly="true" cols="95" rows="12">

// entity event (behavior packs only), put the particular event name after the @s
"@s minecraft:entity_event"

// slash command (behavior packs only), can be any server-side slash command
// is invoked from the entity, so a teleport, for example, will teleport the entity by default
"/tell @a this is a message"

// Molang Expressions, executes a Molang expression on the entity
"variable.something_to_set = 3;"

</textarea> </br>
<a href="#Index">返回顶部</a><br><br>

<h1><p id="General Notes">总注解</p></h1>

</br>本文档包含通过实体.json数据驱动各种事件的详细信息。实体事件可以进入行为包和资源包。行为包使用与资源包中相同的动画和动画控制器设置，尽管实体.json本身使用不同的方法来激活动画。</br></br>实体事件是在 Bedrock 引擎中推动游戏和实体状态更改的一种方式。这些事件通常可以包括斜杠命令（仅限行为包）、实体事件（例如，成为成年人）和 Molang 表达式（例如，在特定实体上将 Molang 变量 “variable.foo” 设置为 3）。Animation 和 Animation controllers 提供了一种驱动实体的状态机和时间轴的方法。例如，特定的动画控制器可能处于特定状态，并运行特定的动画，我们希望在进入/退出该状态时触发事件。或者，一个 “animation” 可能正在运行，我们希望在该动画期间触发事件。实体事件时间线机制使这成为可能。</br><a href="#Index">返回顶部</a><br><br>

